package cn.guo.action;


import java.util.List;
import java.util.Map;

import org.apache.struts2.interceptor.RequestAware;




import cn.guo.entity.FilmType;
import cn.guo.service.IFilmTypeService;

import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;
import com.opensymphony.xwork2.util.ValueStack;

public class TypeAction extends ActionSupport implements ModelDriven<FilmType>, RequestAware{
	
	/*******一、封装数据********/
	private FilmType filmType = new FilmType();   // 【模型驱动】
	public void setFilmType(FilmType filmType) {
		this.filmType = filmType;
	}
	public FilmType getFilmType() {
		return filmType;
	}
	
//	获取模型
	public FilmType getModel() {
		return filmType;   // 返回实例化后的对象
	}

	/*******二、注入影片Service********/
	private IFilmTypeService filmTypeService;
		
	public void setFilmTypeService(IFilmTypeService filmTypeService) {
		this.filmTypeService = filmTypeService;
	}

	// 接收框架运行时候传入的代表request对象的map
	private Map<String, Object> request;
	public void setRequest(Map<String, Object> request) {
		this.request = request;
	}
	

	/**
	 * 1. 影片列表展示
	 */
	public String list() {
		// 查询所有影片
		List<FilmType> listFilmType = filmTypeService.getAll();
		// 保存到request
		request.put("listFilmType", listFilmType);
		return "list";
	}
	
	/**
	 * 2. 添加影片 - 进入添加页面
	 */
	public String viewAdd(){
		return "add";
	}
	
	/**
	 * 2. 添加影片 - 添加影片数据
	 */
	public String save(){
		System.out.println(filmType.toString());
		// 调用Service，保存影片
		filmTypeService.save(filmType);		
		return "listAction";  // 重定向到Action
	}
	
	/**
	 *  3. 修改影片信息 - 进入修改视图
	 */
	public String viewUpdate(){
		// 获取要修改的记录的id
		int id = filmType.getId();
		
		// 1. 根据影片的主键查询  (lazy="false")
		FilmType filmType = filmTypeService.findById(id);  // 已经有影片类型信息
		
		// 数据回显
		ValueStack vs = ActionContext.getContext().getValueStack();
		vs.pop();// 移除栈顶元素
		vs.push(filmType); // 入栈
		return "edit";
	}
	
	/**
	 *  4. 修改影片信息 - 确认修改
	 */
	public String update() {	
		//2. 更新影片
		filmTypeService.update(filmType);	
		return "listAction";  // 重定向到列表
	}
	
	/**
	 *  5. 修改影片信息 - 删除
	 */
	public String delete(){
		// 获取要删除影片的主键
		int nid = filmType.getId();
		// 调用service删除
		filmTypeService.delete(nid);
		return "listAction";
	}
}
